% 拉氏逆变换与滤波网络类型分析实验
clear; clc; close all;

%% 1. 拉氏逆变换（部分分式展开）
num = [1 0 3];
den = conv([1 2 5],[1 2]);
[r, p, k] = residue(num, den);

% 拉氏逆变换的时域响应
syms t s
f = (s^2+3)/((s^2+2*s+5)*(s+2));
y = ilaplace(f, s, t);
tv = linspace(0, 10, 1000);
yv = double(subs(y, t, tv));
figure;
plot(tv, yv, 'LineWidth', 2);
xlabel('t'); ylabel('h(t)'); title('拉氏逆变换时域响应'); grid on;

%% 2. 四种极点/零点分布的系统零极点图与单位脉冲响应
sys_info = {
    struct('p',[-1+1i,-1-1i],'z',0,'desc','极点(-1±j)，零点0'),
    struct('p',[-1-0.5i,-1+0.5i],'z',[1i,-1i],'desc','极点(-1±0.5j)，零点±j'),
    struct('p',[-1+1i,-1-1i],'z',[0,0],'desc','极点(-1±j)，零点0(两重)'),
    struct('p',[0+0.5i,0-0.5i],'z',[1i,-1i],'desc','极点±0.5j，零点±j')
};

figure;
for k = 1:4
    subplot(2,2,k);
    z = sys_info{k}.z; p = sys_info{k}.p;
    zplane(z, p);
    title(['零极点图: ' sys_info{k}.desc]);
    axis equal;
end

%% 3. 四种系统的单位脉冲响应
figure;
for k = 1:4
    z = sys_info{k}.z; p = sys_info{k}.p;
    b = poly(z); a = poly(p);
    [h, t] = impz(b, a, 50);
    subplot(2,2,k);
    stem(t, h, 'filled');
    title(['单位脉冲响应: ' sys_info{k}.desc]);
    xlabel('n'); ylabel('h[n]');
end

%% 4. 类型讨论
% 1. 极点(-1±j)，零点0：带通或带阻（需结合幅频响应进一步判断）
% 2. 极点(-1±0.5j)，零点±j：带阻滤波器
% 3. 极点(-1±j)，零点0(两重)：带通或带阻
% 4. 极点±0.5j，零点±j：带通滤波器
